package com.lhy.tool.patchplugin.strategy;

import com.lhy.tool.patchplugin.model.CompileFileWrapper;
import com.lhy.tool.patchplugin.model.SrcFileWrapper;
import com.lhy.tool.patchplugin.model.TargetFileWrapper;

import java.util.List;

/**
 * 文件迁移策略接口
 */
public interface FileStrategy {

    /**
     * 接收什么样类型的文件 匹配返回true 否则返回false
     * @param srcFileWrapper
     * @return
     */
    boolean accept(SrcFileWrapper srcFileWrapper);

    /**
     * 根据源文件获取编译后的文件
     * 非java文件一般对应一个 java文件可能包含内部类所有有多个
     * @param srcFileWrapper
     * @return
     */
    List<CompileFileWrapper> getCompileFiles(SrcFileWrapper srcFileWrapper);

    /**
     * 根据编译后的文件获取迁移后的目标文件
     * 一个编译后的文件可能对于对个目标文件
     * 例如同一个jar包被多个war包依赖
     * @param compileFileWrapper
     * @return
     */
    List<TargetFileWrapper> getTargetFiles(CompileFileWrapper compileFileWrapper);

}
